From: Florian Müllner Date: Sun, 21 Aug 2022 18:59:25 +0000 (+0200) Subject: screenshot: Disable screencasts when locked X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~452^2^2~43 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=aa7bc4cfa387735bb91247e644d950357c7af0b6;p=gnome-shell.git screenshot: Disable screencasts when locked It is currently not possible to bring up the screenshot UI while locked, but that is about to change. We still don't want screencasts in that case, because they are much easier to abuse for filling up someone else's disk. That restriction is enforced by inhibiting remote access in the backend, so trying to create a screencast session will fail anyway. Still, not offering an action that is unavailable is better than having it fail silently, so do exactly that. Part-of: --- diff --git a/data/theme/gnome-shell-sass/widgets/_screenshot.scss b/data/theme/gnome-shell-sass/widgets/_screenshot.scss index f7fa3da2b..150f273b4 100644 --- a/data/theme/gnome-shell-sass/widgets/_screenshot.scss +++ b/data/theme/gnome-shell-sass/widgets/_screenshot.scss @@ -98,6 +98,7 @@ $screenshot_ui_button_red: $error_color; &:hover, &:focus { background-color: lighten($osd_bg_color, 10%);} &:active { background-color: lighten($active_bg_color,5%);} &:checked { background-color: white;color: black;} + &:insensitive { color: transparentize($osd_fg_color, 0.5);} border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing; diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js index 931f95831..d82d7a7a6 100644 --- a/js/ui/screenshot.js +++ b/js/ui/screenshot.js @@ -1021,8 +1021,6 @@ var ScreenshotUI = GObject.registerClass({ this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' }); - Main.sessionMode.connect('updated', () => this.close(true)); - // The full-screen screenshot has a separate container so that we can // show it without the screenshot UI fade-in for a nicer animation. this._stageScreenshotContainer = new St.Widget({ visible: false }); @@ -1343,6 +1341,15 @@ var ScreenshotUI = GObject.registerClass({ } } ); + + Main.sessionMode.connect('updated', + () => this._sessionUpdated()); + this._sessionUpdated(); + } + + _sessionUpdated() { + this.close(true); + this._castButton.reactive = Main.sessionMode.allowScreencast; } _refreshButtonLayout() {